package com.sprouting.personal.model.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sprouting.personal.annotations.CheckLength;
import com.sprouting.personal.annotations.CheckNotNull;
import com.sprouting.personal.model.common.BaseModel;
import com.sprouting.personal.model.common.jsr.AddGroup;
import com.sprouting.personal.model.common.jsr.UpdGroup;
import lombok.Data;

import javax.validation.constraints.Null;

/**
 * 上传文件信息表
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/9/15 23:58
 */
@Data
@TableName("ps_upload_file")
public class UploadFile extends BaseModel {

    /**
     * 主键
     */
    @TableId
    @CheckNotNull(message = "非法ID", groups = UpdGroup.class)
    @Null(message = "无效ID", groups = AddGroup.class)
    private String id;
    /**
     * 隶属用户
     */
    @CheckNotNull(message = "请选择所属用户")
    private String userId;
    /**
     * 绑定id， 可以理解为组ID，比如购物信息中有多个图片，那么这里就是购物信息的ID
     * @see ShoppingCart#getId() 购物ID
     * @see MemberFamily#getId() 人员的ID，人员的社交关系人员也包含
     */
    private String bindingId;
    /**
     * 文件类型，上传的文件类型
     * @see com.sprouting.personal.interfaces.common.Constant.FileType
     */
    private Integer fileType;
    /**
     * 存储的相对路径
     */
    @CheckLength(min = 1, max = 150, message = "存储路径超过长度限制")
    private String savePath;
    /**
     * 资源是否删除
     * @see com.sprouting.personal.interfaces.common.Constant.YesOrNo#YES 已删除
     */
    private Integer delResource;
    /**
     * 是否临时文件;临时文件指刚上传，但可能数据还没入库的，超时会进行删除的
     * @see com.sprouting.personal.interfaces.common.Constant.TempFile
     */
    private Integer tempFile;
    /**
     * 资料类型
     * @see com.sprouting.personal.interfaces.common.Constant.FileSourceType
     */
    @CheckNotNull(message = "请选择资料类型")
    private Integer type;
    /**
     * 文件信息，备用字段
     */
    @CheckLength(max = 900, message = "文件信息超过长度限制")
    private String fileInfo;
    /**
     * 备注
     */
    @CheckLength(max = 900, message = "备注超过长度限制")
    private String remarks;
}
